typedef enum tagSDP_ABNF_RULE_E
{
    SDP_ABNF_RULE_SESSION_DESCRIPTION,
    SDP_ABNF_RULE_PROTO_VERSION,
    SDP_ABNF_RULE_ORIGIN_FIELD,
    SDP_ABNF_RULE_SESSION_NAME_FIELD,
    SDP_ABNF_RULE_INFORMATION_FIELD,
    SDP_ABNF_RULE_URI_FIELD,
    SDP_ABNF_RULE_EMAIL_FIELDS,
    SDP_ABNF_RULE_PHONE_FIELDS,
    SDP_ABNF_RULE_CONNECTION_FIELD,
    SDP_ABNF_RULE_BANDWIDTH_FIELDS,
    SDP_ABNF_RULE_TIME_FIELDS,
    SDP_ABNF_RULE_REPEAT_FIELDS,
    SDP_ABNF_RULE_ZONE_ADJUSTMENTS,
    SDP_ABNF_RULE_KEY_FIELD,
    SDP_ABNF_RULE_ATTRIBUTE_FIELDS,
    SDP_ABNF_RULE_MEDIA_DESCRIPTIONS,
    SDP_ABNF_RULE_MEDIA_FIELD,
    SDP_ABNF_RULE_USERNAME,
    SDP_ABNF_RULE_SESS_ID,
    SDP_ABNF_RULE_SESS_VERSION,
    SDP_ABNF_RULE_NETTYPE,
    SDP_ABNF_RULE_ADDRTYPE,
    SDP_ABNF_RULE_URI,
    SDP_ABNF_RULE_EMAIL_ADDRESS,
    SDP_ABNF_RULE_ADDRESS_AND_COMMENT,
    SDP_ABNF_RULE_DISPNAME_AND_ADDRESS,
    SDP_ABNF_RULE_PHONE_NUMBER,
    SDP_ABNF_RULE_PHONE,
    SDP_ABNF_RULE_CONNECTION_ADDRESS,
    SDP_ABNF_RULE_BWTYPE,
    SDP_ABNF_RULE_BANDWIDTH,
    SDP_ABNF_RULE_START_TIME,
    SDP_ABNF_RULE_STOP_TIME,
    SDP_ABNF_RULE_TIME,
    SDP_ABNF_RULE_REPEAT_INTERVAL,
    SDP_ABNF_RULE_TYPED_TIME,
    SDP_ABNF_RULE_FIXED_LEN_TIME_UNIT,
    SDP_ABNF_RULE_KEY_TYPE,
    SDP_ABNF_RULE_BASE64,
    SDP_ABNF_RULE_BASE64_UNIT,
    SDP_ABNF_RULE_BASE64_PAD,
    SDP_ABNF_RULE_BASE64_CHAR,
    SDP_ABNF_RULE_ATTRIBUTE,
    SDP_ABNF_RULE_ATT_FIELD,
    SDP_ABNF_RULE_ATT_VALUE,
    SDP_ABNF_RULE_MEDIA,
    SDP_ABNF_RULE_FMT,
    SDP_ABNF_RULE_PROTO,
    SDP_ABNF_RULE_PORT,
    SDP_ABNF_RULE_UNICAST_ADDRESS,
    SDP_ABNF_RULE_MULTICAST_ADDRESS,
    SDP_ABNF_RULE_IP4_MULTICAST,
    SDP_ABNF_RULE_M1,
    SDP_ABNF_RULE_IP6_MULTICAST,
    SDP_ABNF_RULE_TTL,
    SDP_ABNF_RULE_FQDN,
    SDP_ABNF_RULE_IP4_ADDRESS,
    SDP_ABNF_RULE_B1,
    SDP_ABNF_RULE_IP6_ADDRESS,
    SDP_ABNF_RULE_HEXPART,
    SDP_ABNF_RULE_HEXSEQ,
    SDP_ABNF_RULE_HEX4,
    SDP_ABNF_RULE_EXTN_ADDR,
    SDP_ABNF_RULE_TEXT,
    SDP_ABNF_RULE_BYTE_STRING,
    SDP_ABNF_RULE_NON_WS_STRING,
    SDP_ABNF_RULE_TOKEN_CHAR,
    SDP_ABNF_RULE_TOKEN,
    SDP_ABNF_RULE_EMAIL_SAFE,
    SDP_ABNF_RULE_INTEGER,
    SDP_ABNF_RULE_ALPHA_NUMERIC,
    SDP_ABNF_RULE_POS_DIGIT,
    SDP_ABNF_RULE_DECIMAL_UCHAR,

    SDP_ABNF_RULE_BUTT
}SDP_ABNF_RULE_E;

#define SDP_GET_CODE_FUNC(ulAppRuleIndex)  g_astSdpAppRuleTbl[ulAppRuleIndex].pfnCode
#define SDP_GET_DECODE_FUNC(ulAppRuleIndex) g_astSdpAppRuleTbl[ulAppRuleIndex].pfnParse
#define SDP_GET_CLONE_FUNC(ulAppRuleIndex) g_astSdpAppRuleTbl[ulAppRuleIndex].pfnClone
